Conventional software agents are software modules that reside on remote servers and autonomously process requests received from a client or another software component. At a high level, agents perform information gathering or processing tasks in the background and are defined to execute relatively small and well-defined tasks. Each agent is typically customized for a specific environment in order to attempt to satisfy the particular set of goals or tasks. For example, one agent may be designed to operate in a web-enabled environment, but the agent may be unable to operable to a non-web-enabled environment. In another example, a first agent may be operable to retrieve data from only one type of relational database, thereby requiring a second agent to access a second type of relational database. These agents often require changes by a programmer in order to manage a different environment or diverse outputs, components, products, or business logic.